namespace("w3c.DragEvent", {
	'@inherits' : w3c.MouseEvent,
	altKey : false,
	button : 0,
	which : 0,
	bubbles : true,
	cancelable : true,
	clientX : 0,
	clientY : 0,
	screenX : 0,
	screenY : 0,
	pageX : 0,
	pageY:0,
	layerX:0,
	layerY:0,
	ctrlKey : null,
	metaKey : null,
	relatedTarget : null,
	target:null,
	dataTransfer: null,
	shiftKey : null,
	currentTarget:null,
	explicitOriginalTarget : null,
	eventPhase : 0,
	originalTarget : null,
	rangeParent : null,
	rangeOffset : 0,
	timeStamp : 0,
	view : window,
	getModifierState : function(){},
	
	initDragEvent : function(typeArg, canBubbleArg, cancelableArg, dummyArg, detailArg, screenXArg, screenYArg, clientXArg, clientYArg, ctrlKeyArg, altKeyArg, shiftKeyArg, metaKeyArg, buttonArg, relatedTargetArg, dataTransferArg){
		this.type = typeArg;
		this.bubbles = canBubbleArg;
		this.cancelable = cancelableArg;
		this.data = dummyArg;
		this.details = detailArg;
		this.screenX = screenXArg;
		this.screenY = screenYArg;
		this.clientX = clientXArg;
		this.clientY = clientYArg;
		
		this.ctrlKey = ctrlKeyArg;
		this.altKey = altKeyArg;
		this.shiftKey = shiftKeyArg;
		this.metaKey = metaKeyArg;
		this.button = buttonArg;
		this.relatedTarget = relatedTargetArg;
		if(dataTransferArg) {
			this.dataTransfer = dataTransferArg;
		}
		return this;
	},

	initialize : function(typeArg, canBubbleArg, cancelableArg, dummyArg, detailArg, screenXArg, screenYArg, clientXArg, clientYArg, ctrlKeyArg, altKeyArg, shiftKeyArg, metaKeyArg, buttonArg, relatedTargetArg, dataTransferArg){
		return this.initDragEvent(arguments);
	}
});